﻿// 11.while循环.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

//while 循环语句

/*
语法：
while (表达式)
{
    语句块
}
*/


//先计算表达式的值，如果为真就执行语句块，执行完语句块后，回到循环首部再次计算表达式的值，
//如果为真又执行一次语句块……，这个过程会一直重复，直到表达式的值为假时不再执行语句块。

// 注意：
// 如果表达式的值永远为真，那么将进入死循环，所以在循环中应该有改变表达式的值的方法。
// 如果循环体中的语句块只有一行代码，大括号可以不书写。
// 有疑问先放一边，在以后的课程中，会介绍循环的各种使用方法。


// 有十个超女，编号是 1-10，在控制台输出这十个超女的编号

/*
#include <iostream>
using namespace std;
int main()
{
    int woman = 1;
    while (woman<=10)
        cout << "这是第" << woman++<<"妹妹\n";
}
*/

//标准死循环
/*
#include<iostream>
using namespace std;
int main()
{
    int no = 1;
    while (true)
        cout << "妹妹身材真棒\n";
}
*/

//缺少条件造成死循环

/*
#include<iostream>
using namespace std;
int main()
{
    int no = 1;
    while (no < 10000)               //恒为真造成死循环
    {
        cout << "Hello World\n";
        //no++;
    }
}
*/


//循环的跳转

// break 和 continue 两个关键字用于控制循环体中代码的执行流程。
// break 跳出（中止）当前循环语句。
// continue 回到当前循环语句的首部。

// 程序运行后一直工作，逐个输入超女的数据，判断是否晋级，如果到了休息时间，就把程序停下来。
// 超女选秀的流程：1）如果漂亮，直接晋级；2）不漂亮也行，身材火辣的也可以晋级。


/*
#include<iostream>
using namespace std;
int main()
{
    bool once = true;                                                    //是否为第一次执行循环
    while (true)
    {
        if (once == false)
        {
            cout << "是否继续下一位超女选秀\n";
            bool exist; cin >> exist;                                   //导演决定,1-继续选秀，0-退出选秀
            if (exist == false) break;                                  //跳出循环
        }
        once = false;       //循环过一次后，执行上述代码块
      
        cout << "请输入超女的颜值信息(1.漂亮 0.不漂亮)：";
        bool yz; cin >> yz;                                         //超女颜值
        if (yz == true)
        {
            cout << "\n恭喜你，成功晋级！\n"; continue;
        }
        cout << "请输入超女的身材信息(1.火辣 0.不火辣)：";
        bool stature; cin >> stature;                               //超女身材
        if (stature == true) cout << "恭喜你，成功晋级！\n";
        else
            cout << "晋级失败！建议去健身\n";
    }
}
*/


//for 循环语句

/*
语法：
for (语句一; 表达式; 语句二)
{
    语句块
}
*/

//1）循环开始的时候，先执行语句一，在整个循环过程中语句一只会被执行一次。
//2）计算表达式的值，如果为真，就执行一次循环体中的语句块。
//3）执行完语句块后，执行一次语句二。
//4）重复第 2）步和第 3），直到表达式的值不为真才结束 for 循环。

//注意：
// 不要纠结 for 循环与 while 循环的区别，它们本质上没有区别。
// for 循环一般需要一个相当于计数器的变量，在语句一中对它进行初始化，在语句二中进行计数操作。
// 在 for 循环的语句一中，可以声明计数器变量。
// 在 for 循环中，语句一、表达式和语句二都可以为空，for(;;)等同于 while (true),即死循环。
// continue 和 break 两个关键字也可以用在 for 循环体中。

/*
#include<iostream>
using namespace std;
int main()
{
    int i = 1;
    for (i = 1; i <= 10; i++)
    {
        cout << "第" << i << "位漂亮妹妹\n";
    }
}
*/

//嵌套使用for循环

#include<iostream>
using namespace std;

int main()
{
    //超女分 4 个小组，每个小组有 3 名超女，在控制台显示每个超女的小组编号和组内编号
    //用一个循环，显示 4 个小组的信息。
    //再用一个循环，显示一组中 3 名超女的信息。
    string name;
    int i = 0;
    for (i = 1; i <= 4; i++)
    {
        int j = 1; 
        for (j = 1; j <= 3; j++)
        {
            cout << "第" << i << "小组的" << j << "位超女" << endl;
        }
        cout << endl;
    }
}